#ifndef GULL_SCENEMANAGER_H
#define GULL_SCENEMANAGER_H

#include "Singleton.h"
#include "Scene.h"

namespace gull{
	namespace core {
		
        //!Scene Manager class manage scenes of the Gull Engine
        /**
         * @author Jonathan Depiets
         * @date 2011 03 01
         * @version 0.1
         */
        
		class SceneManager: public Singleton<SceneManager> {
			friend class Singleton<SceneManager>;
            
			
		public:
            inline const Scene* getScene() const;
			inline static void setActiveScene(Scene* ga);
			static inline void renderScene(); 
		protected:
			
		private:
            static Scene* s_currentScene; 
            
			SceneManager();
			~SceneManager();
		};
        
		
		void SceneManager::setActiveScene(Scene* scene){
			s_currentScene = scene;
		}
        
        const Scene*
        SceneManager::getScene() const
        {
            return s_currentScene;
        }
        
        void
        SceneManager::renderScene(){
			if (s_currentScene) {
				s_currentScene->renderScene();
			}
			
        }
	}
}

#endif